<?php
namespace app\admin\controller;


use app\extra\DBCont;

/**
 * @title 赛事
 * @description 接口说明
 * @group 报名管理后台接口
 * @header name:authorization require:1 default: desc:登陆的token
 */
class Match extends Base
{
    protected $_order = 'id desc';

    /**
     * @title 获取
     * @description 接口说明
     * @author hardy
     * @url /admin/Match
     * @method GET
     *
     * @param name:id type:int require:0 default:1 other: desc:唯一ID，获取某条记录详情，则为必填，id和page选填其一
     * @param name:page type:int require:0 default:1 other: desc:页码数 获取第二页以上的数据必填，默认值为1，id和page选填其一
     * @param name:size type:int require:0 default:20 other: desc:每一页的数量，默认20
     * @param name:name type:int require:0 default:20 other: desc:参赛名称（搜索内容）
     *
     *
     * @return name:赛事名称
     * @return desc:赛事描述
     * @return start_time:开始时间
     * @return end_time:结束时间
     * @return cate_id:分类id（因为包含多个，所以逗号隔开）
     * @return is_fees:收费类型:0免费,1收费（按人头收费）
     * @return cost:收费金额
     * @return images:图片（逗号隔开）
     * @return status:状态(数字)
     * @return agreement:协议/须知
     * @return people_number:报名人数
     * @return team_count:团队数量
     * @return pay_count:支付单数
     * @return member_count:个人赛数量
     *
     *
     * @return list:消息列表,有page参数则返回值list，list是一个数组，
     * @return size:每页最大数，默认20，可由前端传递参数决定 page参数返回值，
     * @return page:当前页，page参数返回值，
     * @return count:总记录数， page参数返回值，
     */
    public function gets()
    {
        parent::gets();

    }
    protected function _searchPage(&$where)
    {
        $data = input('get.');
        $key = 'name';
        if(!empty($data[$key])){
            $where[] = [$key,'like', "%{$data[$key]}%"];
        }
        if (isset($data['status'])){
            if ($data['status'] == DBCont::SUCCESS){
                $where[] = ['status', '=', DBCont::SUCCESS];
                $where[] = ['start_time', '<', time()];
                $where[] = ['end_time', '>', time()];
            } else {
                $where[] = ['status','=', $data['status']];

            }
        }
    }
    /**
     * @title 创建
     * @description 接口说明
     * @author hardy
     * @url /admin/Match
     * @method POST
     *
     *
     * @param name:name type:string require:1 default: other: desc:比赛名称
     * @param name:desc type:string require:1 default: other: desc:赛事描述
     * @param name:start_time type:date require:1 default: other: desc:开始时间，时间戳
     * @param name:end_time type:date require:1 default: other: desc:结束时间，时间戳
     * @param name:cate_id type:string|array|int require:1 default: other: desc:分类id，字符串（逗号隔开分类id）或数组（分类id）或者int（单个分类）
     * @param name:is_fees type:int require:1 default: other: desc:收费类型:0免费,1收费
     * @param name:cost type:float require:0 default:0 other: desc:收费金额,精确到小数点后两位
     * @param name:images type:string|array|int require:1 default: other: desc:比赛图片，字符串（逗号隔开分类id）或数组（分类id）或者int（单个分类）
     * @param name:auth type:string require:0 default: other: desc:创建人
     * @param name:status type:int require:0 default:0 other: desc:赛事状态：0未开始，1进行中，2已结束
     * @param name:agreement type:string require:1 default:0 other: desc:协议/须知
     *
     * @return name:比赛名称
     * @return desc:赛事描述
     * @return start_time:开始时间
     * @return end_time:结束时间
     * @return cate_id:分类，由多个分类组成，是一个数组
     * @return is_fees:收费类型:0免费,1收费
     * @return cost:收费金额,精确到小数点后两位
     * @return images:多图由key-value组成，是一个数组
     * @return auth:创建人
     * @return status:赛事状态：0未开始，1进行中，2已结束
     * @return agreement:协议/须知
     */
    public function create(){
        parent::create();
    }
    /**
     * @title 修改
     * @description 接口说明：修改接口除了id必填，其余的都为选填，上传需要修改的字段或状态
     * @author hardy
     * @url /admin/Match
     * @method put
     *
     *
     * @param name:id type:int require:1 default: other: desc:赛事id
     * @param name:name type:string require:0 default: other: desc:比赛名称
     * @param name:desc type:string require:0 default: other: desc:赛事描述
     * @param name:start_time type:date require:0 default: other: desc:开始时间，时间戳
     * @param name:end_time type:date require:0 default: other: desc:结束时间，时间戳
     * @param name:cate_id type:string|array|int require:0 default: other: desc:分类id，字符串（逗号隔开分类id）或数组（分类id）或者int（单个分类）
     * @param name:is_fees type:int require:0 default: other: desc:收费类型:0免费,1收费
     * @param name:cost type:float require:0 default:0 other: desc:收费金额,精确到小数点后两位
     * @param name:images type:string|array|int require:0 default: other: desc:比赛图片，字符串（逗号隔开分类id）或数组（分类id）或者int（单个分类）
     * @param name:auth type:string require:0 default: other: desc:创建人
     * @param name:status type:int require:0 default:0 other: desc:赛事状态：0未开始，1进行中，2已结束
     * @param name:agreement type:string require:0 default:0 other: desc:协议/须知
     *
     * @return name:比赛名称
     * @return desc:赛事描述
     * @return start_time:开始时间
     * @return end_time:结束时间
     * @return cate_id:分类，由多个分类组成，是一个数组
     * @return is_fees:收费类型:0免费,1收费
     * @return cost:收费金额,精确到小数点后两位
     * @return images:多图由key-value组成，是一个数组
     * @return auth:创建人
     * @return status:赛事状态：0未开始，1进行中，2已结束
     * @return status_desc:赛事状态：未开始，进行中，已结束
     * @return agreement:协议/须知
     */
    public function update(){
        parent::update();
    }
    /**
     * @title 删除
     * @description 接口说明
     * @author hardy
     * @url /admin/Match
     * @method delete
     *
     *
     * @param name:id type:int|string|array require:1 default: other: desc:单个删除：数字，多组删除：","隔开的数字或者数组
     *
     */
    public function delete(){
        $id = input('delete.id');
        $data = model('Team')->where('match_id', $id)->value('id');
        if (!empty($data)){
            $this->responseFail('该赛事有参赛团队，不能删除');
        }
        parent::delete();
    }
}